home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / tts / tts.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-08  |  22.4 KB  |  1,149 lines

  1.  
  2.         /* 入院時医学管理料  TOWNS用  Ver 1.02   H4.11 */
  3.  
  4.         /*TOWNS用 0x1e              PC用 0x0b */
  5.         /*TOWNS用 0x1f              PC用 0x0a */
  6.         /*TOWNS用 0x1d              PC用 0x08 */
  7.         /*TOWNS用 0x1c              PC用 0x0c */
  8.         /*TOWNS用 gotoxy            PC用 LOCATE */
  9.         /*TOWNS用 FCURS_ON()        PC用 CURS_ON()*/
  10.         /*TOWNS用 FCURS_OFF()       PC用 CURS_OFF()*/
  11. #include<stdio.h>
  12. #include<INC#CONO.H>
  13. #include<conio.h>
  14. #include<math.h>
  15. #include<graphics.h>
  16.  
  17. #define ue 0x1e
  18. #define sita 0x1f
  19. #define hidari 0x1d
  20. #define migi 0x1c
  21. #define ch 0x0d
  22. #define N 31
  23.  
  24. char mouitido(void);
  25. void ca1(int,int,int,int,int,int,int,int);
  26. void ca2(int,int,int,int,int,int,int,int);
  27. int nen1(void);
  28. int nen2(void);
  29. int ca3(int,int,int,int *,int *,int *);
  30. int ca4(int,int,int,int,int);
  31. void g_stat(void);
  32. void g_end(void);
  33.  
  34. void main(void)
  35. {
  36.     int ad[N+1];
  37.     static int da[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  38.     static int db[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  39.     static int dc[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  40.     int s[32];
  41.     int h[32];/* 退院日の記憶 */
  42.     int ka,kb,kc,kd,ke;
  43.     int e,d,c,q,q1,hy,hm,hd,ty,tm,td,ttm,t,ds,yy,dd,b,a,i,wy,j;
  44.     int zt,zt1,zt2,e1,g,gd,sy,sm,qq,kt;
  45.     int sw,tss,zx1,zx2,r,rr,p,chx,cu;
  46.  
  47.     printf("\x1b[m");
  48.     CLS();
  49.     tss=0;
  50.     chx=0;
  51.     cu=1;
  52.         for(i=0;i<32;i++){
  53.         s[i]='\0';
  54.         h[i]='\0';
  55.     }
  56.     g_stat();
  57.     gotoxy(1,3);
  58.     printf("\n初期設定をしちゃうよ~  (^_^) ");
  59.     printf("\n\n表示する年は 平成 \x1b[m何年ですか ? ");
  60.     scanf("%d",&sy);rewind(stdin);
  61.     printf("\n表示する月は ? ");
  62.     scanf("%d",&sm);rewind(stdin);
  63.     j=sy;
  64.     sy=1988+sy;
  65.  
  66.     sw=mouitido();
  67.     CLS();
  68.     printf("\n\n\n");
  69.     printf("********** 平成 %d年%d月分 **********\n\n",j,sm);
  70.  
  71.     printf("実日数は ? ");
  72.     q=3;q1=3,tm=0,td=0,d=0;
  73.     while(scanf("%d",&gd)!=0){
  74.  
  75.     e=0;d=0;kt=0;qq=1;
  76. if(gd==0){
  77.     CLS();
  78.     gotoxy(1,3);
  79.     printf("\n初期設定をしちゃうよ~  (゚v゚)");
  80.     printf("\n\n表示する年は 平成 何年ですか ? ");
  81.     scanf("%d",&sy);rewind(stdin);
  82.     printf("\n表示する月は ? ");
  83.     scanf("%d",&sm);rewind(stdin);
  84.     j=sy;
  85.     sy=1988+sy;
  86.  
  87.     sw=mouitido();
  88.  
  89.     CLS();
  90.     tm=0,td=0,d=0;
  91.     printf("\n\n\n実日数は ? ");
  92.     scanf("%d",&gd);
  93.  
  94. }
  95.  
  96.     while(qq==1){
  97.  
  98.     c=1;
  99.     printf("\n");
  100.     if(q1==3){
  101.  
  102.     CLS();
  103.     q=nen1();
  104.     gotoxy(25,6);
  105.     printf("入院年は ");
  106.     scanf("%d",&hy);rewind(stdin);
  107.     }
  108.     else{
  109.         q=4;
  110.         CLS();
  111.  
  112.         gotoxy(25,24);
  113.         printf("%d月 %d日 退院からの残日数は  %d日",tm,td,d);
  114.  
  115.         gotoxy(25,6);
  116.         printf("入院年は 平成 ");
  117.         scanf("%d",&hy);rewind(stdin);
  118.     }
  119.     gotoxy(25,7);
  120.     printf("入院月は ");
  121.     scanf("%d",&hm);rewind(stdin);
  122.     gotoxy(25,8);
  123.     printf("入院日は ");
  124.     scanf("%d",&hd);rewind(stdin);
  125.     if(q==3)
  126.         hy=1925+hy;
  127.     if(q==4)
  128.         hy=1988+hy;
  129.     printf("\n");
  130.     if(q==3){
  131.  
  132.     gotoxy(25,10);
  133.     printf("\x1b[Y");/*カ-ソルから終わりまで消去*/
  134.     q1=nen2();
  135.     gotoxy(25,11);
  136.     printf("退院年は ");
  137.     scanf("%d",&ty);rewind(stdin);
  138.  
  139.     }
  140.     else{
  141.         q1=4;
  142.     gotoxy(25,11);
  143.     printf("\x1b[Y");/*カ-ソルから終わりまで消去*/
  144.         printf("退院年は 平成 ");
  145.         scanf("%d",&ty);rewind(stdin);
  146.     }
  147.     if(ty==0){
  148.         ty=j;
  149.         tm=sm;
  150.         td=0;
  151.         printf("\n");
  152.     }
  153.     else{
  154.     gotoxy(25,12);
  155.     printf("退院月は ");
  156.     scanf("%d",&tm);rewind(stdin);
  157.     gotoxy(25,13);
  158.     printf("退院日は ");
  159.     scanf("%d",&td);rewind(stdin);
  160.     printf("\n");
  161.     }
  162.     if(q1==3)
  163.         ty=1925+ty;
  164.     if(q1==4)
  165.         ty=1988+ty;
  166.     h[cu]=td;/* 退院日を記憶する */
  167.   /* ★★★退院日 0 の時の退院日の計算★★★ */
  168.  
  169.     if(hy==sy && hm==sm && td==0){
  170.         td=hd+(gd-kt)-1;
  171.         qq=0;
  172.     }
  173.     else if(td==0){
  174.         td=gd;
  175.         qq=0;
  176.     }
  177.  
  178.     if(tm==sm && ty==sy)
  179.         zt=td;
  180.     if(hm==sm && hy==sy)
  181.         zt=td-hd+1;
  182.  
  183.     if(ty==sy && tm==sm)
  184.         kt=kt+zt;
  185.  
  186.     if(kt==gd)
  187.         qq=0;
  188.  
  189.  /* ★★★入院月(HM)から退院月(TM)までの月数 TTM ★★★ */
  190.  
  191.  
  192.     ttm=0;
  193.     t=0;
  194.  
  195.  
  196.     if(hy<ty && ty-hy>1)
  197.         ttm=(12-hm)+tm+(ty-hy-1)*12;
  198.  
  199.     if(hy<ty && ty-hy==1)
  200.         ttm=(12-hm)+tm;
  201.  
  202.     if(hy==ty)
  203.         ttm=tm;
  204.     else
  205.         ttm=hm+ttm;
  206.  
  207.  /* ★★★HD~TDまでの日数 T ★★★ */
  208.  
  209.     ds=hm;
  210.     yy=hy;
  211.  
  212.     for(i=hm;i<=ttm;i++){
  213.  
  214.     if(yy%4==0 && yy%100!=0 || yy%400==0 )
  215.         db[2]=29;
  216.     else
  217.         db[2]=28;
  218.  
  219.         t=t+db[ds];
  220.         ds=ds+1;
  221.         if(ds==13){
  222.             ds=1;
  223.             yy=yy+1;
  224.         }
  225.     }
  226.     t=t-(hd-1)-(db[tm]-td);
  227.  /* ★★★ 外泊用s[]に入院日数を入れる ★★★ */
  228.     if(sy!=hy && sy==ty && sm==tm || sm!=hm && sy==ty && sm==tm)
  229.         p=td;
  230.     if(sy==hy && sm==hm && sy==ty && sm==tm)
  231.         p=td-hd+1;
  232.     if(sy!=hy && sy==ty && sm==tm || sm!=hm && sy==ty && sm==tm){
  233. /* 退院日と入院日が同日の時の処理 */
  234. /*        if(hd==h[cu-1] || h[cu-1] != 0 && hd==td){*/
  235. /*            for(i=1;i<=p+1;i++)*/
  236. /*            s[i]=9;*/
  237. /*        }*/
  238. /*        else{*/
  239.             for(i=1;i<=p;i++)
  240.             s[i]=9;
  241. /*        }*/
  242.     }
  243.     if(sy==hy && sm==hm && sy==ty && sm==tm){
  244. /* 退院日と入院日が同日の時の処理 */
  245. /*        if(hd==h[cu-1] || h[cu-1] != 0 && hd==td){*/
  246. /*            for(i=hd;i<=hd+p;i++)*/
  247. /*            s[i]=9;*/
  248. /*        }*/
  249. /*        else{*/
  250.             for(i=hd;i<=hd+p-1;i++)
  251.             s[i]=9;
  252. /*        }*/
  253.     }
  254.     tss=tss+t;
  255.     cu++;
  256.  /* ★★★入院開始日 DD の計算  <<入院日(HD)+残日数(D)>>★★★ */
  257.  
  258.     if(hy%4==0 && hy%100!=0 || hy%400==0 )
  259.         da[2]=29;
  260.     else
  261.         da[2]=28;
  262.  
  263.     if(t>d){
  264.         dd=hd+d;
  265.         if(dd<=da[hm])
  266.             hd=dd;
  267.         else if(dd>da[hm] && hm!=12){
  268.             hd=dd-da[hm];
  269.             hm=hm+1;
  270.         }
  271.         else if(dd>da[hm] && hm==12){
  272.             hd=dd-da[hm];
  273.             hm=1;
  274.             hy=hy+1;
  275.         }
  276.     }
  277.  /* ★★★残日数の判定 C  <<C=1繰り返し  C=2終了>>★★★ */
  278.  
  279.     a=hm;
  280.     wy=hy;
  281.  
  282.     while(c==1){
  283.  
  284.         b=hd-1;
  285.         e=e+1;
  286.  
  287.         if(a==tm && wy==ty)
  288.             c=2;
  289.  
  290.         if(a!=12)
  291.             a=a+1;
  292.         else{
  293.             a=1;
  294.             wy=wy+1;
  295.         }
  296.     if(wy%4==0 && wy%100!=0 || wy%400==0 )
  297.         dc[2]=29;
  298.     else
  299.         dc[2]=28;
  300.  
  301.         if(tm==2 && hd>dc[2])
  302.             b=dc[2];
  303.  
  304.         if(wy>ty)
  305.             c=2;
  306.         if(a==tm && wy==ty)
  307.             c=2;
  308.  
  309.  /* ★★★残日数 D の計算★★★ */
  310.  
  311.     if(t<=d){
  312.         d=d-t;
  313.         e=e-1;
  314.     }
  315.     else if(hm==tm && hy==ty)
  316.         d=dc[hm]-td+b;
  317.     else if(a==tm && wy==ty && b>=td)
  318.         d=b-td;
  319.     else if(a==tm && wy==ty && b<td){
  320.         d=dc[tm]-td+b;
  321.         e=e+1;
  322.     }
  323.     }
  324. }
  325.  /*--------------------------------------------*/
  326.     zt=gd;
  327.  
  328.     zt1=dc[tm]-d;
  329.     if(gd<zt1)
  330.         zt2=gd;
  331.     else
  332.         zt2=gd-zt1;
  333.  
  334.     e1=e-1;
  335.     if(gd==zt2)
  336.         zt1=0;
  337.  
  338.     for(g=0;g<N+1;g++)
  339.         ad[g]=0;
  340.     zt=ca3(zt,tss,gd,&zt2,&zx1,&zx2);
  341.  
  342.  /* ★★★外泊日の計算★★★ */
  343.  
  344.     ka=zx1;
  345.     kb=zx2;
  346.     kc=zt2;
  347.     kd=zt1;
  348.     ke=zt;
  349.  
  350.     for(i=1;i<=31;i++){
  351.         if(s[i]==9){
  352.             if(ka>0){
  353.                 s[i]=1;
  354.                 ka=ka-1;
  355.             }
  356.             else if(kb>0){
  357.                 s[i]=2;
  358.                 kb=kb-1;
  359.             }
  360.             else if(kc>0){
  361.                 s[i]=4;
  362.                 kc=kc-1;
  363.             }
  364.             else if(kc==0){
  365.                 s[i]=5;
  366.                 kd=kd-1;
  367.             }
  368.         }
  369.     }
  370.     r=0;rr=0;
  371.     rr=zt1;
  372.  
  373.     do{
  374.     gotoxy(25,15);
  375.     printf("外泊日? ");
  376.     scanf("%d",&g);rewind(stdin);
  377.     s[g]='\0';
  378.     if(g>0)
  379.         ke=ke-1;
  380.     ad[g]=1;
  381.     r=r+1;
  382.     }while(g>0);
  383.  
  384.     ka=kb=kc=kd=0;
  385.     for(i=1;i<=31;i++){
  386.         if(s[i]==1)
  387.             ka=ka+1;
  388.         else if(s[i]==2)
  389.             kb=kb+1;
  390.         else if(s[i]==4)
  391.             kc=kc+1;
  392.         else if(s[i]==5)
  393.             kd=kd+1;
  394.     }
  395.  
  396.     zt=ke+(zx1+zx2-ka-kb);
  397.     zx2=kb;
  398.     zx1=ka;
  399.     zt2=kc;
  400.     zt1=kd;
  401.  
  402.     if(r>1 && zt1==0 && e>1 && rr>0)
  403.         e=e-1;
  404.  
  405.     CLS();
  406.     gotoxy(16,5);
  407.         printf("ノ-マル");
  408.  
  409.     if(sw=='1' || sw=='3' || sw=='5' || sw=='7'){
  410.  
  411.     gotoxy(37,5);
  412.         printf("×1.05");
  413.     gotoxy(67,5);
  414.         printf("×1.1");
  415.      }
  416.     gotoxy(1,10);
  417.  
  418.     chx=ca4(tss,gd,sw,zx1,zx2);
  419.  
  420.     if(sw=='1' || sw=='2' || sw=='3'|| sw=='5' || sw=='6'|| sw=='7')
  421.         ca1(e,e1,zt,zt1,zt2,sw,tss,chx);
  422.     if(sw=='4' || sw=='8')
  423.         ca2(e,e1,zt,zt1,zt2,sw,tss,chx);
  424.     if(sw=='9' && e==1 || sw=='9' && zt1==0){
  425.         printf("%d月以内   %d日\n",e,zt);
  426.     }
  427.     else if(sw=='9'){
  428.         printf("%d月以内   %d日\n\n",e1,zt2);
  429.         printf("%d月以内   %d日\n\n",e,zt1);
  430.     }
  431.  
  432.  
  433.         printf("\n\n");
  434.  
  435.     tss=0;
  436.     chx=0;
  437.     cu=1;
  438.         for(i=0;i<32;i++){
  439.         s[i]='\0';
  440.         h[i]='\0';
  441.     }
  442.  
  443.     printf("\n*** 新規入力します。 何かキ-を押してください。 ***");
  444.     getch();
  445.  
  446.     CLS();
  447.     gotoxy(1,4);
  448.     printf("0で初期設定・終了する時は 0~9以外を入力してよ~ん。\n\n");
  449.     printf("**********平成 %d年%d月分********** \n\n",j,sm);
  450.  
  451.     printf("実日数は ?");
  452.     q=3;q1=3;
  453.  
  454.      }
  455.     g_end();
  456. }
  457.  
  458. void ca1(int e,int e1,int zt,int zt1,int zt2,int sw,int t,int chx)
  459. {
  460. double m1,m2,m3,m4,m5,m6,m7,ka,ex1,ex2,f4,f5,f6,f7,fa,fb,ffa,ffb;
  461. double ff4,ff5,ff6,ff7,mm4,mm5,mm6,mm7,ex1a,ex2b;
  462. int it,i,x,y;
  463.     switch(sw){
  464.         case'1':
  465.             m1=331;m2=235;m3=222;m4=151;m5=117;m6=98;m7=96;sw=1;
  466.             break;
  467.         case'2':
  468.             m1=158;m2=124;m3=119;m4=88;m5=71;m6=67;m7=65;sw=2;
  469.             break;
  470.         case'3':
  471.             m1=331;m2=235;m3=222;m4=151;m5=115;m6=90;m7=80;sw=3;
  472.             break;
  473.         case'5':
  474.             m1=326;m2=230;m3=217;m4=146;m5=114;m6=95;m7=93;sw=5;
  475.             break;
  476.         case'6':
  477.             m1=155;m2=121;m3=116;m4=85;m5=69;m6=66;m7=63;sw=6;
  478.             break;
  479.         case'7':
  480.             m1=326;m2=230;m3=217;m4=146;m5=108;m6=82;m7=72;sw=7;
  481.             break;
  482. }
  483.     if(e==1 && zt1==0) ex1=m1;
  484.     if(e==2 && zt1==0) ex1=m2;
  485.     if(e==3 && zt1==0) ex1=m3;
  486.  
  487.     if(e==1 && zt1>0){ ex1=m1;ex2=m2;}
  488.     if(e==2 && zt1>0){ ex1=m1;ex2=m2;}
  489.     if(e==3 && zt1>0){ ex1=m2;ex2=m3;}
  490.  
  491.     if(e==1 && zt2==0) ex1=m1;
  492.     if(e==2 && zt2==0) ex1=m2;
  493.     if(e==3 && zt2==0) ex1=m3;
  494.  
  495.     it=0;
  496.     if(e==4 && zt1>0 && zt2>0){ e1=3;e=6;ex1=m3;ex2=m4;it=1;}
  497.     if(e==4 && zt1==0 || e==4 && zt2==0 || e>4 && e<=6 && it != 1 ){ ex1=m3;e=6;ex2=m4;it=2;}
  498.     if(e==7 && zt1==0 || e==7 && zt2==0 || e>7 && e<=12 && it != 1 ){ e=12;it=2;}
  499.     if(e==13 && zt1==0 || e==13 && zt2==0 || e>13 && e<=18 && it != 1 ){ e=18;it=2;}
  500.     if(e==19 && zt1==0 || e==19 && zt2==0 || e>19){ e=20;it=2;}
  501.     if(chx==1) y=12+2;
  502.     else y=12;
  503.     gotoxy(1,y);
  504.     x=35;
  505.     ka=1.05;
  506. for(i=0;i<=1;i++){
  507.    if(sw==2 || sw==6)
  508.     i=1;
  509.     if(e==1 || e<=3 && zt2==0 || zt1==0 && e<=3){
  510.     if(t>14 || zt>0){
  511.         fa=floor(ex1*ka);
  512.         ffa=ex1*ka-fa;
  513.         fa=floor(ffa*10);
  514.         if(fa>4)
  515.             ex1a=floor(ex1*ka)+1.0;
  516.         else
  517.             ex1a=floor(ex1*ka);
  518.         printf("%d月以内     %3.0lf点×%d日\n",e,ex1,zt);
  519.    if(sw==1 || sw==3 || sw==5 || sw==7){
  520.         gotoxy(x,y);
  521.         printf("%3.0lf点×%d日\n\n",ex1a,zt);
  522.         }
  523.     }
  524. }
  525.     else if(e==4 && zt2==0 || e>4 && e<=6 && it==2){
  526.         f4=floor(m4*ka);
  527.         ff4=m4*ka-f4;
  528.         f4=floor(ff4*10);
  529.         if(f4>4)
  530.             mm4=floor(m4*ka)+1.0;
  531.         else
  532.             mm4=floor(m4*ka);
  533.         printf("6月以内     %3.0lf点×%d日\n",m4,zt);
  534.    if(sw==1 || sw==3 || sw==5 || sw==7){
  535.         gotoxy(x,y);
  536.         printf("%3.0lf点×%d日\n\n",mm4,zt);
  537.         }
  538. }
  539.     else if(e==7 && zt2==0 || e>7 && e<=12){
  540.         f5=floor(m5*ka);
  541.         ff5=m5*ka-f5;
  542.         f5=floor(ff5*10);
  543.         if(f5>4)
  544.             mm5=floor(m5*ka)+1.0;
  545.         else
  546.             mm5=floor(m5*ka);
  547.         printf("1年以内     %3.0lf点×%d日\n",m5,zt);
  548.    if(sw==1 || sw==3 || sw==5 || sw==7){
  549.         gotoxy(x,y);
  550.         printf("%3.0lf点×%d日\n\n",mm5,zt);
  551.         }
  552. }
  553.     else if(e==13 && zt2==0 || e>13 && e<=18){
  554.         f6=floor(m6*ka);
  555.         ff6=m6*ka-f6;
  556.         f6=floor(ff6*10);
  557.         if(f6>4)
  558.             mm6=floor(m6*ka)+1.0;
  559.         else
  560.             mm6=floor(m6*ka);
  561.         printf("1年6月以内  %3.0lf点×%d日\n",m6,zt);
  562.    if(sw==1 || sw==3 || sw==5 || sw==7){
  563.         gotoxy(x,y);
  564.         printf("%3.0lf点×%d日\n\n",mm6,zt);
  565.         }
  566. }
  567.     else if(e==18 && zt2==0 || e>19){
  568.         f7=floor(m7*ka);
  569.         ff7=m7*ka-f7;
  570.         f7=floor(ff7*10);
  571.         if(f7>4)
  572.             mm7=floor(m7*ka)+1.0;
  573.         else
  574.             mm7=floor(m7*ka);
  575.         printf("1年6月以上  %3.0lf点×%d日\n",m7,zt);
  576.    if(sw==1 || sw==3 || sw==5 || sw==7){
  577.         gotoxy(x,y);
  578.         printf("%3.0lf点×%d日\n\n",mm7,zt);
  579.         }
  580. }
  581.     else if(e>1 && e<=6){
  582.         fa=floor(ex1*ka);
  583.         ffa=ex1*ka-fa;
  584.         fa=floor(ffa*10);
  585.         if(fa>4)
  586.             ex1a=floor(ex1*ka)+1.0;
  587.         else
  588.             ex1a=floor(ex1*ka);
  589.         fb=floor(ex2*ka);
  590.         ffb=ex2*ka-fb;
  591.         fb=floor(ffb*10);
  592.         if(fb>4)
  593.             ex2b=floor(ex2*ka)+1.0;
  594.         else
  595.             ex2b=floor(ex2*ka);
  596.         printf("%d月以内     %3.0lf点×%d日\n\n",e1,ex1,zt2);
  597.         printf("%d月以内     %3.0lf点×%d日\n\n",e,ex2,zt1);
  598.    if(sw==1 || sw==3 || sw==5 || sw==7){
  599.         gotoxy(x,y);
  600.         printf("%3.0lf点×%d日\n\n",ex1a,zt2);
  601.         gotoxy(x,y+2);
  602.         printf("%3.0lf点×%d日\n\n",ex2b,zt1);
  603.         }
  604. }
  605.  
  606.     else if(e>6 && e<=12){
  607.         f4=floor(m4*ka);
  608.         ff4=m4*ka-f4;
  609.         f4=floor(ff4*10);
  610.         if(f4>4)
  611.             mm4=floor(m4*ka)+1.0;
  612.         else
  613.             mm4=floor(m4*ka);
  614.         f5=floor(m5*ka);
  615.         ff5=m5*ka-f5;
  616.         f5=floor(ff5*10);
  617.         if(f5>4)
  618.             mm5=floor(m5*ka)+1.0;
  619.         else
  620.             mm5=floor(m5*ka);
  621.         printf("6月以内     %3.0lf点×%d日\n\n",m4,zt2);
  622.         printf("1年以内     %3.0lf点×%d日\n\n",m5,zt1);
  623.    if(sw==1 || sw==3 || sw==5 || sw==7){
  624.         gotoxy(x,y);
  625.         printf("%3.0lf点×%d日\n\n",mm4,zt2);
  626.         gotoxy(x,y+2);
  627.         printf("%3.0lf点×%d日\n\n",mm5,zt1);
  628.         }
  629. }
  630.     else if(e>12 && e<=18){
  631.         f5=floor(m5*ka);
  632.         ff5=m5*ka-f5;
  633.         f5=floor(ff5*10);
  634.         if(f5>4)
  635.             mm5=floor(m5*ka)+1.0;
  636.         else
  637.             mm5=floor(m5*ka);
  638.         f6=floor(m6*ka);
  639.         ff6=m6*ka-f6;
  640.         f6=floor(ff6*10);
  641.         if(f6>4)
  642.             mm6=floor(m6*ka)+1.0;
  643.         else
  644.             mm6=floor(m6*ka);
  645.         printf("1年以内     %3.0lf点×%d日\n\n",m5,zt2);
  646.         printf("1年6月以内  %3.0lf点×%d日\n\n",m6,zt1);
  647.    if(sw==1 || sw==3 || sw==5 || sw==7){
  648.         gotoxy(x,y);
  649.         printf("%3.0lf点×%d日\n\n",mm5,zt2);
  650.         gotoxy(x,y+2);
  651.         printf("%3.0lf点×%d日\n\n",mm6,zt1);
  652.         }
  653. }
  654.     else if(e==19){
  655.         f6=floor(m6*ka);
  656.         ff6=m6*ka-f6;
  657.         f6=floor(ff6*10);
  658.         if(f6>4)
  659.             mm6=floor(m6*ka)+1.0;
  660.         else
  661.             mm6=floor(m6*ka);
  662.         f7=floor(m7*ka);
  663.         ff7=m7*ka-f7;
  664.         f7=floor(ff7*10);
  665.         if(f7>4)
  666.             mm7=floor(m7*ka)+1.0;
  667.         else
  668.             mm7=floor(m7*ka);
  669.         printf("1年6月以内  %3.0lf点×%d日\n\n",m6,zt2);
  670.         printf("1年6月以上  %3.0lf点×%d日\n\n",m7,zt1);
  671.    if(sw==1 || sw==3 || sw==5 || sw==7){
  672.         gotoxy(x,y);
  673.         printf("%3.0lf点×%d日\n\n",mm6,zt2);
  674.         gotoxy(x,y+2);
  675.         printf("%3.0lf点×%d日\n\n",mm7,zt1);
  676.         }
  677.     }
  678.     gotoxy(1,y);
  679.     x=65;
  680.     ka=1.1;
  681.     }
  682.             printf("\n\n");
  683. }
  684.  
  685.  
  686. void ca2(int e,int e1,int zt,int zt1,int zt2,int sw,int t,int chx)
  687. {
  688. double m1,m2,m3,m4,m5,m6,m7,ex1,ex2;
  689.  
  690. int it,y;
  691.     if(e==2)        /* 2月~3月合算の処理*/
  692.          e=3;
  693.     if(e1==2)
  694.          e1=3;
  695.     switch(sw){
  696.  
  697.         case'4':
  698.             m1=151;m2=120;m3=90;m4=72;m5=67;m6=65;m7=61;sw=4;
  699.             break;
  700.         case'8':
  701.             m1=149;m2=117;m3=87;m4=70;m5=67;m6=63;m7=58;sw=8;
  702.             break;
  703.     }
  704.     if(e==1 && zt1==0) ex1=m1;
  705.     if(e>=2 && e<=3 && zt1==0) ex1=m2;
  706.  
  707.     if(e==1 && zt1>0){ ex1=m1;ex2=m2;}
  708.     if(e>=2 && e<=3 && zt1>0){ ex1=m1;ex2=m2;}
  709.  
  710.     if(e==1 && zt2==0) ex1=m1;
  711.     if(e>=2 && e<=3 && zt2==0) ex1=m2;
  712.     
  713.     if(e==3 && e1==3){    /* 2月~3月合算の処理*/
  714.         ex1=m2;
  715.         zt1=0;
  716.         zt2=0;
  717.     }
  718.  
  719.  
  720.     it=0;
  721.     if(e==4 && zt1>0 && zt2>0){ e1=3;e=6;ex1=m2;ex2=m3;it=1;}
  722.  
  723.     if(e==4 && zt1==0 || e==4 && zt2==0 || e>4 && e<=6 && it != 1){ ex1=m2;e=6;ex2=m3;it=2;}
  724.     if(e==7 && zt1==0 || e==7 && zt2==0 || e>7 && e<=12 && it != 1 ){ e=12;it=2;}
  725.     if(e==13 && zt1==0 || e==13 && zt2==0 || e>13 && e<=18 && it != 1 ){ e=18;it=2;}
  726.     if(e==19 && zt1==0 || e==19 && zt2==0 || e>19 && e<=24 && it != 1 ){ e=24;it=2;}
  727.     if(e==25 && zt1==0 || e==25 && zt2==0 || e>25){ e=26;it=2;}
  728.  
  729.     if(chx==1) y=12+2;
  730.     else y=12;
  731.  
  732.     gotoxy(1,y);
  733.  
  734.     if(e==1 || e<=3 && zt2==0 || zt1==0 && e<=3){
  735.         if(t>14 || zt>0){
  736.         printf("%d月以内     %3.0lf点×%d日\n",e,ex1,zt);
  737.     }
  738. }
  739.     else if(e==4 && zt2==0 && it==2 || e>4 && e<=6 && it==2){
  740.         printf("6月以内     %3.0lf点×%d日\n",m3,zt);
  741. }
  742.     else if(e==7 && zt2==0 || e>7 && e<=12){
  743.         printf("1年以内     %3.0lf点×%d日\n",m4,zt);
  744. }
  745.     else if(e==13 && zt2==0 || e>13 && e<=18){
  746.         printf("1年6月以内   %3.0lf点×%d日\n",m5,zt);
  747. }
  748.     else if(e==19 && zt2==0 || e>19 && e<=24){
  749.         printf("2年以内     %3.0lf点×%d日\n",m6,zt);
  750. }
  751.     else if(e==25 && zt2==0 || e>25){
  752.         printf("2年以上   %3.0lf点×%d日\n",m7,zt);
  753. }
  754.     else if(e>1 && e<=6){
  755.         printf("%d月以内     %3.0lf点×%d日\n\n",e1,ex1,zt2);
  756.         printf("%d月以内     %3.0lf点×%d日\n\n",e,ex2,zt1);
  757. }
  758.     else if(e>6 && e<=12){
  759.         printf("6月以内     %3.0lf点×%d日\n\n",m3,zt2);
  760.         printf("1年以内     %3.0lf点×%d日\n\n",m4,zt1);
  761. }
  762.     else if(e>12 && e<=18){
  763.         printf("1年以内     %3.0lf点×%d日\n\n",m4,zt2);
  764.         printf("1年6月以内  %3.0lf点×%d日\n\n",m5,zt1);
  765.     }
  766.     else if(e>18 && e<=24){
  767.         printf("1年6月以内  %3.0lf点×%d日\n\n",m5,zt2);
  768.         printf("2年以内   %3.0lf点×%d日\n\n",m6,zt1);
  769.     }
  770.     else if(e==25){
  771.         printf("2年以内     %3.0lf点×%d日\n\n",m6,zt2);
  772.         printf("2年以上     %3.0lf点×%d日\n\n",m7,zt1);
  773.     }
  774.  
  775.             printf("\n\n");
  776. }
  777. char mouitido()
  778. {
  779.  
  780.     int a,d,x;
  781.  
  782.     d='1';
  783.     x=2;
  784.     FCURS_OFF();
  785.     CLS();
  786.     gotoxy(25,5);printf("\x1b[7m");
  787.     printf("甲表 ----- 一般 ----- 病院   ===> 1 ");
  788.     gotoxy(25,7);printf("\x1b[m");
  789.     printf("甲表 ----- 一般 ----- 診療所 ===> 2 ");
  790.     gotoxy(25,9);
  791.     printf("甲表 ----- 老人 ----- 病院   ===> 3 ");
  792.     gotoxy(25,11);
  793.     printf("甲表 ----- 老人 ----- 診療所 ===> 4 ");
  794.     gotoxy(25,13);
  795.     printf("乙表 ----- 一般 ----- 病院   ===> 5 ");
  796.     gotoxy(25,15);
  797.     printf("乙表 ----- 一般 ----- 診療所 ===> 6 ");
  798.     gotoxy(25,17);
  799.     printf("乙表 ----- 老人 ----- 病院   ===> 7 ");
  800.     gotoxy(25,19);
  801.     printf("乙表 ----- 老人 ----- 診療所 ===> 8 ");
  802.     gotoxy(25,21);
  803.     printf("9でノ-マルモ-ドだよ(^_^) ");
  804.  
  805.     do{
  806.         a=getch();
  807.         if(a==ue){
  808.                 if(d=='1')
  809.                     d='9';
  810.                 else
  811.                     --d;
  812.              }
  813.          else if(a==sita){
  814.                 if(d=='9')
  815.                     d='1';
  816.                 else
  817.                     ++d;
  818.             }
  819.          else if(a==ch)
  820.                 x=1;
  821.          else if(a=='1' || a=='2' || a=='3' || a=='4' || a=='5'
  822.             || a=='6' || a=='7' || a=='8' || a=='9'){
  823.                 d=a;
  824.                 x=1;
  825.             }
  826.     if(d=='9' || d=='2'){
  827.     gotoxy(25,5);    printf("\x1b[m");
  828.     printf("甲表 ----- 一般 ----- 病院   ===> 1 ");
  829.     }
  830.     if(d=='1' || d=='3'){
  831.     gotoxy(25,7);printf("\x1b[m");
  832.     printf("甲表 ----- 一般 ----- 診療所 ===> 2 ");
  833.     }
  834.     if(d=='2' || d=='4'){
  835.         printf("\x1b[m");
  836.     gotoxy(25,9);
  837.     printf("甲表 ----- 老人 ----- 病院   ===> 3 ");
  838.     }
  839.     if(d=='3' || d=='5'){
  840.         printf("\x1b[m");
  841.     gotoxy(25,11);
  842.     printf("甲表 ----- 老人 ----- 診療所 ===> 4 ");
  843.     }
  844.     if(d=='4' || d=='6'){
  845.         printf("\x1b[m");
  846.     gotoxy(25,13);
  847.     printf("乙表 ----- 一般 ----- 病院   ===> 5 ");
  848.     }
  849.     if(d=='5' || d=='7'){
  850.         printf("\x1b[m");
  851.     gotoxy(25,15);
  852.     printf("乙表 ----- 一般 ----- 診療所 ===> 6 ");
  853.     }
  854.     if(d=='6' || d=='8'){
  855.         printf("\x1b[m");
  856.     gotoxy(25,17);
  857.     printf("乙表 ----- 老人 ----- 病院   ===> 7 ");
  858.     }
  859.     if(d=='7' || d=='9'){
  860.         printf("\x1b[m");
  861.     gotoxy(25,19);
  862.     printf("乙表 ----- 老人 ----- 診療所 ===> 8 ");
  863.     }
  864.     if(d=='8' || d=='1'){
  865.         printf("\x1b[m");
  866.     gotoxy(25,21);
  867.     printf("9でノ-マルモ-ドだよ(^_^) ");
  868.     }
  869.     if(d=='1'){
  870.     gotoxy(25,5);    printf("\x1b[7m");
  871.     printf("甲表 ----- 一般 ----- 病院   ===> 1 ");
  872.     }
  873.     if(d=='2'){
  874.     gotoxy(25,7);printf("\x1b[7m");
  875.     printf("甲表 ----- 一般 ----- 診療所 ===> 2 ");
  876.     }
  877.     if(d=='3'){
  878.         printf("\x1b[7m");
  879.     gotoxy(25,9);
  880.     printf("甲表 ----- 老人 ----- 病院   ===> 3 ");
  881.     }
  882.     if(d=='4'){
  883.         printf("\x1b[7m");
  884.     gotoxy(25,11);
  885.     printf("甲表 ----- 老人 ----- 診療所 ===> 4 ");
  886.     }
  887.     if(d=='5'){
  888.         printf("\x1b[7m");
  889.     gotoxy(25,13);
  890.     printf("乙表 ----- 一般 ----- 病院   ===> 5 ");
  891.     }
  892.     if(d=='6'){
  893.         printf("\x1b[7m");
  894.     gotoxy(25,15);
  895.     printf("乙表 ----- 一般 ----- 診療所 ===> 6 ");
  896.     }
  897.     if(d=='7'){
  898.         printf("\x1b[7m");
  899.     gotoxy(25,17);
  900.     printf("乙表 ----- 老人 ----- 病院   ===> 7 ");
  901.     }
  902.     if(d=='8'){
  903.         printf("\x1b[7m");
  904.     gotoxy(25,19);
  905.     printf("乙表 ----- 老人 ----- 診療所 ===> 8 ");
  906.     }
  907.     if(d=='9'){
  908.         printf("\x1b[7m");
  909.     gotoxy(25,21);
  910.     printf("9でノ-マルモ-ドだよ(^_^) ");
  911.     }
  912.     }while(x==2);
  913.     FCURS_ON();
  914.     printf("\x1b[m");
  915.     CLS();
  916.     return(d);
  917. }
  918.  
  919.  
  920. int nen1()
  921. {
  922.     int x,q;
  923.     char a;
  924.  
  925.     FCURS_OFF();
  926.     x=4;
  927.     q=4;
  928.     gotoxy(25,5);
  929.     printf("\x1b[m入院年は");
  930.     gotoxy(35,5);
  931.     printf("\x1b[m昭和");
  932.     gotoxy(43,5);
  933.     printf("\x1b[7m平成");
  934.     do{
  935.         a=getch();
  936.         if(a==hidari){
  937.                 gotoxy(35,5);
  938.                 printf("\x1b[7m昭和");
  939.                 gotoxy(43,5);
  940.                 printf("\x1b[m平成");
  941.                 q=3;
  942.          }
  943.          else if(a==migi){
  944.                 gotoxy(35,5);
  945.                 printf("\x1b[m昭和");
  946.                 gotoxy(43,5);
  947.                 printf("\x1b[7m平成");
  948.                 q=4;
  949.           }
  950.          else if(a==ch)
  951.                         x=2;
  952.  
  953.     }while(x>2);
  954.     FCURS_ON();
  955.     printf("\x1b[m");
  956.     return(q);
  957. }
  958.  
  959. int nen2()
  960. {
  961.     int x,q1;
  962.     char a;
  963.  
  964.     FCURS_OFF();
  965.     x=4;
  966.     q1=4;
  967.     gotoxy(25,10);
  968.     printf("\x1b[m退院年は");
  969.     gotoxy(35,10);
  970.     printf("\x1b[m昭和");
  971.     gotoxy(43,10);
  972.     printf("\x1b[7m平成");
  973.     do{
  974.         a=getch();
  975.         if(a==hidari){
  976.                 gotoxy(35,10);
  977.                 printf("\x1b[7m昭和");
  978.                 gotoxy(43,10);
  979.                 printf("\x1b[m平成");
  980.                 q1=3;
  981.          }
  982.          else if(a==migi){
  983.                 gotoxy(35,10);
  984.                 printf("\x1b[m昭和");
  985.                 gotoxy(43,10);
  986.                 printf("\x1b[7m平成");
  987.                 q1=4;
  988.           }
  989.          else if(a==ch)
  990.                         x=2;
  991.  
  992.     }while(x>2);
  993.     FCURS_ON();
  994.     printf("\x1b[m");
  995.     return(q1);
  996. }
  997.  
  998. int ca3(int zt,int tt,int gd,int *zt2,int *pzx1,int *pzx2)
  999. {
  1000.     int zx,zx1,zx2,za,zb,zaa,zxx;
  1001.     zx1=0;zx2=0;
  1002.     zx=zt;
  1003.     za=tt-gd;
  1004.         zaa=za-7;
  1005.     zb=14-za;
  1006.     if(za<=14){
  1007.         if(zb!=0 && zb<=7){
  1008.             if(gd<=zb){
  1009.                 zx2=gd;
  1010.                 zx=0;
  1011.             }
  1012.             else{
  1013.                 zx2=zb;
  1014.                 zx=gd-zx2;
  1015.                 }
  1016.         }
  1017.         if(zb>7){
  1018.             if(tt<=7 && za<=7)
  1019.                 zx1=gd;
  1020.             if(tt<=7 && za>7)
  1021.                 zx1=0;
  1022.             if(tt>7 && za<=7)
  1023.                 zx1=7-za;
  1024.             if(gd<=zb){
  1025.                 if(za>7)
  1026.                 zx2=gd-zx1-zaa;
  1027.             if(za<=7)
  1028.                 zx2=gd-zx1;
  1029.             }
  1030.             if(gd>zb){
  1031.                 if(za>7){
  1032.                     zx2=7-zaa;
  1033.                     }
  1034.             if(za<=7)
  1035.                     zx2=7;
  1036.                 }
  1037.             zx=gd-(zx1+zx2);
  1038.          }
  1039.     }
  1040.             zxx=*zt2;
  1041.             zxx=zxx-(zx1+zx2);
  1042.             *zt2=zxx;
  1043.             *pzx1=zx1;
  1044.             *pzx2=zx2;
  1045.     return(zx);
  1046. }
  1047. int ca4(int ptt,int pgd,int psw,int pzx1,int pzx2)
  1048. {
  1049.     int za,i,x,chx;
  1050.     double m1,m2,ka,mm2,f1,ff1;
  1051.     za=ptt-pgd;
  1052.  
  1053.     switch(psw){
  1054.         case'1':
  1055.             m2=521.0;
  1056.             break;
  1057.         case'2':
  1058.             m1=259.0;m2=231.0;
  1059.             break;
  1060.         case'3':
  1061.             m2=521.0;
  1062.             break;
  1063.         case'4':
  1064.             m1=232.0;m2=221.0;
  1065.             break;
  1066.         case'5':
  1067.             m2=516.0;
  1068.             break;
  1069.         case'6':
  1070.             m1=256.0;m2=228.0;
  1071.             break;
  1072.         case'7':
  1073.             m2=516.0;
  1074.             break;
  1075.  
  1076.         case'8':
  1077.             m1=227.0;m2=214.0;
  1078.             break;
  1079.     }
  1080.  
  1081.     if(psw == '1' || psw == '3' || psw == '5' || psw == '7'){
  1082.         pzx2=pzx2+pzx1;
  1083.         psw='1';
  1084.         }
  1085.     else
  1086.         psw='2';
  1087.  
  1088.     if(za<=14){
  1089.         if(pzx1==0 && pzx2!=0 || psw=='1'){
  1090.             printf("2週間以内   %3.0lf点×%d日\n\n",m2,pzx2);
  1091.             chx=0;
  1092.         }
  1093.         if(pzx2==0 && pzx1!=0 && psw=='2'){
  1094.             printf("1週間以内   %3.0lf点×%d日\n\n",m1,pzx1);
  1095.             chx=0;
  1096.             }
  1097.         if(pzx1!=0 && pzx2!=0 && psw=='2'){
  1098.             printf("1週間以内   %3.0lf点×%d日\n\n",m1,pzx1);
  1099.             printf("2週間以内   %3.0lf点×%d日\n\n",m2,pzx2);
  1100.             chx=1;
  1101.         }
  1102.     x=35;
  1103.     ka=1.05;
  1104.     for(i=0;i<=1;i++){
  1105.  
  1106.     if(za<=14 && psw=='1'){
  1107.         if(pzx1==0 && pzx2!=0 || psw=='1'){
  1108.             gotoxy(x,10);
  1109.         f1=floor(m2*ka);
  1110.         ff1=m2*ka-f1;
  1111.         f1=floor(ff1*10);
  1112.         if(f1>4)
  1113.             mm2=floor(m2*ka)+1.0;
  1114.         else
  1115.             mm2=floor(m2*ka);
  1116.             printf("%3.0lf点×%d日\n\n",mm2,pzx2);
  1117.         }
  1118.     }
  1119.         x=65;
  1120.         ka=1.1;
  1121.          }
  1122.        }
  1123.  
  1124.     return(chx);
  1125. }
  1126. void g_stat()
  1127. {
  1128. int graphdriver = DETECT,graphmode;/*自動検出を要求*/
  1129. initgraph(&graphdriver,&graphmode, "");/*グラフィックの初期化*/
  1130. getbkcolor();/*グラフィックのカレントバックカラ-を得る*/
  1131. /*setbkcolor(4);/*グラフィックのカレントバックカラ-をセットする*/
  1132. setfillstyle(1,2);/*グラフィックのフィルパタ-ンとフィルカラ-をセット*/
  1133. setcolor(6);/*ドロウカラ-にパレット番号を設定*/
  1134.  
  1135.     setcolor(5);
  1136.     setfillstyle(SOLID_FILL,LIGHTGREEN);
  1137.     bar3d(0,0,639,26,0,0);
  1138.     setcolor(RED);
  1139.     outtextxy(60,6,"入院時医学管理料計算ソフト     TTS           Ver 1.02   H4.11    kazu");
  1140.  
  1141. }
  1142.  
  1143. void g_end()
  1144. {
  1145.  
  1146.       closegraph();/*グラフィックを終了*/
  1147.       clrscr();/*テキスト画面クリア*/
  1148.  
  1149. }
  1150.